/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.ec.medical.entidades;

import com.ec.medical.enumeracion.TipoDocumentoIdentificadorEnum;
import com.ec.medical.interfaces.Imprimible;
import java.io.Serializable;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;

/**
 *
 * @author Administrador
 */
@Entity
@Table(name = "tipo_documento")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "TipoDocumento.findAll", query = "SELECT t FROM TipoDocumento t"),
    @NamedQuery(name = "TipoDocumento.findByCodigoTipoDocumento", query = "SELECT t FROM TipoDocumento t WHERE t.codigoTipoDocumento = :codigoTipoDocumento"),
    @NamedQuery(name = "TipoDocumento.findByNombre", query = "SELECT t FROM TipoDocumento t WHERE t.nombre = :nombre"),
    @NamedQuery(name = "TipoDocumento.findByIdentificador", query = "SELECT t FROM TipoDocumento t WHERE t.identificador = :identificador")})
public class TipoDocumento implements Serializable, Imprimible {

    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "codigo_tipo_documento")
    private Integer codigoTipoDocumento;
    @Basic(optional = false)
    @Column(name = "nombre")
    private String nombre;
    @Basic(optional = false)
    @Enumerated(EnumType.STRING)
    @Column(name = "identificador")
    private TipoDocumentoIdentificadorEnum identificador;
    @Basic(optional = true)
    @Column(name = "clase_validadora")
    private String claseValidadora;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "tipoDocumento")
    private List<Cliente> clientes;
    
    public TipoDocumento() {
    }

    public TipoDocumento(Integer codigoTipoDocumento) {
        this.codigoTipoDocumento = codigoTipoDocumento;
    }

    public TipoDocumento(Integer codigoTipoDocumento, String nombre, TipoDocumentoIdentificadorEnum identificador) {
        this.codigoTipoDocumento = codigoTipoDocumento;
        this.nombre = nombre;
        this.identificador = identificador;
    }

    public Integer getCodigoTipoDocumento() {
        return codigoTipoDocumento;
    }

    public void setCodigoTipoDocumento(Integer codigoTipoDocumento) {
        this.codigoTipoDocumento = codigoTipoDocumento;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public TipoDocumentoIdentificadorEnum getIdentificador() {
        return identificador;
    }

    public void setIdentificador(TipoDocumentoIdentificadorEnum identificador) {
        this.identificador = identificador;
    }

    @XmlTransient
    public List<Cliente> getClientes() {
        return clientes;
    }

    public void setClientes(List<Cliente> clientes) {
        this.clientes = clientes;
    }

    

    public String getClaseValidadora() {
        return claseValidadora;
    }

    public void setClaseValidadora(String claseValidadora) {
        this.claseValidadora = claseValidadora;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (codigoTipoDocumento != null ? codigoTipoDocumento.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof TipoDocumento)) {
            return false;
        }
        TipoDocumento other = (TipoDocumento) object;
        if ((this.codigoTipoDocumento == null && other.codigoTipoDocumento != null) || (this.codigoTipoDocumento != null && !this.codigoTipoDocumento.equals(other.codigoTipoDocumento))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "modelo.TipoDocumento[ codigoTipoDocumento=" + codigoTipoDocumento + " ]";
    }

    @Override
    public String getEtiqueta() {
        return getNombre();
    }

    @Override
    public Object getObjecto() {
        return this;
    }
}